home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / _archvrs / unix / shar.lha / shar / glue.c < prev    next >
C/C++ Source or Header  |  1987-12-03  |  897b  |  39 lines

  1. /*
  2. **  Subroutine to call the shell archive parser.  This is "glue"
  3. **  between unshar and the parser proper.
  4. */
  5. #include "shar.h"
  6. RCS("$Header: glue.c,v 1.1 87/03/09 16:24:17 rs Exp $")
  7.  
  8.  
  9. /*
  10. **  Copy the input to a temporary file, then call the shell parser.
  11. */
  12. BinSh(Name, Stream, Pushback)
  13.     char        *Name;
  14.     register FILE    *Stream;
  15.     char        *Pushback;
  16. {
  17.     static char         TEMP[] = "/tmp/shellXXXXXX";
  18.     register FILE    *F;
  19.     char         buff[BUFSIZ];
  20.     char        *vec[MAX_WORDS];
  21.  
  22.     Interactive = Name == NULL;
  23.     File = mktemp(TEMP);
  24.     F = fopen(File, "w");
  25.     (void)fputs(Pushback, F);
  26.     while (fgets(buff, sizeof buff, Stream))
  27.     (void)fputs(buff, F);
  28.     (void)fclose(Stream);
  29.  
  30.     if ((Input = fopen(TEMP, "r")) == NULL)
  31.     fprintf(stderr, "Can't open %s, %s!?\n", TEMP, Ermsg(errno));
  32.     else
  33.     while (GetLine(TRUE))
  34.         if (Argify(vec))
  35.         (void)Exec(vec);
  36.  
  37.     (void)unlink(TEMP);
  38. }
  39.